/***************************************************************************************************
Dieser Algorithmus berechnet das Fourier-Window, welches dann verlagert wird.
Eingangsvariablen/Zgr.:

	- Re ... Realteil des des NDFT_Window
	- Im ... Imaginaerteil des NDFT_Window
	- Nfreq ... Größe des Frequenzarrays fdetect (:= sizeof(freq) ) 
	- freq ... das Frequenzarrays fdetect 
	- tsampled ... der Zeitvektor

*******************************************************************************************************
Status: noch keine Vereinfachungen, blanke Implementierung. -> Diesen Algorithmus später auslagern in main.cpp
*******************************************************************************************************/


#include"tS.h"

void NDFTWindow(double* Re,double* Im,int sizeValues, int NFreq,double* freq, double* tsampled)
{
	double sumRe,sumIm;
	double Abs[NFreq];
	double maxima[2];
	for(int k=0;k<NFreq;k++)
	{	
		
		Re[k] = 0;
		Im[k] = 0;
	
		for(int i=0;i<=sizeValues;i++)
		{

			Re[k] = Re[k]+(cos(-2*PI*freq[k]*tsampled[i]));
			Im[k] = Im[k]+(sin(-2*PI*freq[k]*tsampled[i]));
			
		}
		Re[k]=Re[k]/sqrt(sizeValues);
		Im[k]=Im[k]/sqrt(sizeValues);
		Abs[k]=sqrt(Re[k]*Re[k]+Im[k]*Im[k]);
	}

	peak(maxima,NFreq,Abs);
	//cout<<"Max "<<maxima[1]<<" welches "<<Re[(int)maxima[1]]<<","<<Im[(int)maxima[1]]<<endl;
	int c=Re[(int)maxima[1]];
	int d=Im[(int)maxima[1]];
	
	for(int k=0;k<NFreq;k++)
	{
		Re[k]=(Re[k]*c + Im[k]*d)/(c*c+d*d);
		Im[k]=(-Re[k]*d + Im[k]*c)/(c*c+d*d);
	}
		

}

//EOF
